/* lockexcl.c
This example program queries a GPIB device for an identification string
and prints the results. Note that you must change the address. */
#include <visa.h>
#include <stdio.h>
void main () {
ViSession defaultRM, vi;
char buf [256] = {0};
/* Open session to GPIB device at address 22 */
viOpenDefaultRM (&defaultRM);
viOpen (defaultRM, "GPIB0::22::INSTR", VI_NULL,VI_NULL, &vi);
/* Initialize device */
viPrintf (vi, "*RST\n");
/* Make sure no other process or thread does anything to this resource
between the viPrintf() and the viScanf() calls */
viLock (vi, VI_EXCLUSIVE_LOCK, 2000, VI_NULL, VI_NULL);
/* Send an *IDN? string to the device */
viPrintf (vi, "*IDN?\n");
/* Read results */
viScanf (vi, "%t", &buf);
/* unlock this session so other processes and threads can use it */
viUnlock (vi);
/* Print results */
printf ("Instrument identification string: %s\n", buf);
/* Close session */
viClose (vi);
viClose (defaultRM);
}